package com.zjd.association.service.impl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zjd.association.common.PageWrapper;
import com.zjd.association.entity.Notices;
import com.zjd.association.mapper.NoticesMapper;
import com.zjd.association.service.NoticesService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * 通知记录 服务层实现类
 *
 * @author: zjd
 * @date: 2024-5-22
 */
@Service
@RequiredArgsConstructor
public class NoticesServiceImpl implements NoticesService {

    private final NoticesMapper noticesMapper;

    @Override
    public void add(Notices notices) {
        noticesMapper.insert(notices);
    }

    @Override
    public void update(Notices notices) {
        noticesMapper.updateById(notices);
    }

    @Override
    public void delete(Notices notices) {
        noticesMapper.deleteById(notices);
    }

    @Override
    public Notices getOne(String id) {
        return noticesMapper.selectById(id);
    }

    /**
     * 获取系统发布的通知信息
     *
     * @return 通知信息列表
     */
    @Override
    public List<Notices> getSysNotices() {
        return noticesMapper.qrySysNotices();
    }

    /**
     * 获取活动管理员相关的通知信息
     *
     * @param manId 活动管理员ID
     * @return 通知信息列表
     */
    @Override
    public List<Notices> getManNotices(String manId) {
        return noticesMapper.qryManNotices(manId);
    }

    /**
     * 获取活动成员相关通知信息
     *
     * @param memId 活动成员ID
     * @return 通知信息列表
     */
    @Override
    public List<Notices> getMemNotices(String memId) {
        return noticesMapper.qryMemNotices(memId);
    }

    /**
     * 分页查询通知记录信息
     *
     * @param pageIndex 当前页码
     * @param pageSize  每页数据量
     * @param title     通知标题
     * @param teamName  活动名称
     * @return 通知信息列表
     */
    @Override
    public PageWrapper getPageAll(Long pageIndex, Long pageSize, String title, String teamName) {
        Page<Map<String, Object>> page
                = noticesMapper.qryPageAll(new Page<>(pageIndex, pageSize), title, teamName);
        return PageWrapper.parsePage(page);
    }

    /**
     * 分页查询指定用户相关通知记录信息
     *
     * @param pageIndex 当前页码
     * @param pageSize  每页数据量
     * @param userId    用户ID
     * @param title     通知标题
     * @param teamName  活动名称
     * @return 通知信息列表
     */
    @Override
    public PageWrapper getPageById(Long pageIndex, Long pageSize, String userId, String title, String teamName) {
        Page<Map<String, Object>> page
                = noticesMapper.qryPageById(new Page<>(pageIndex, pageSize), userId, title, teamName);
        return PageWrapper.parsePage(page);
    }

}